package modelo;

import java.util.Collection;
import java.util.ArrayList;

import modelo.GeneradorDeEscenarios;
import excepciones.CantidadDePosicionesIncorrectasExcepcion;
import excepciones.TableroIndiceFueraDeRangoExcepcion;

public class GeneradorDeEscenariosDePrueba extends GeneradorDeEscenarios {
	
	@Override
	public Collection<Barco> generarEscenario(Tablero tablero) {
		Collection<Barco> barcos = new ArrayList<Barco>();
		ArrayList<Posicion> posiciones = new ArrayList<Posicion>();	
		
		try {
			posiciones.add(tablero.getPosicion(1,1));
			posiciones.add(tablero.getPosicion(2,1));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Lancha(posiciones, new Sur()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(3,3));
			posiciones.add(tablero.getPosicion(3,4));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Lancha(posiciones, new Este()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(4,7));
			posiciones.add(tablero.getPosicion(5,7));
			posiciones.add(tablero.getPosicion(6,7));
			posiciones.add(tablero.getPosicion(7,7));
			posiciones.add(tablero.getPosicion(8,7));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Portaaviones(posiciones, new Norte()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(0,7));
			posiciones.add(tablero.getPosicion(1,7));
			posiciones.add(tablero.getPosicion(2,7));
			posiciones.add(tablero.getPosicion(3,7));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Buque(posiciones, new Suroeste()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(4,6));
			posiciones.add(tablero.getPosicion(5,6));
			posiciones.add(tablero.getPosicion(6,6));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Destructor(posiciones, new Noroeste()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(6,2));
			posiciones.add(tablero.getPosicion(6,3));
			posiciones.add(tablero.getPosicion(6,4));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new Destructor(posiciones, new Este()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		posiciones = new ArrayList<Posicion>();
		try {
			posiciones.add(tablero.getPosicion(7,3));
			posiciones.add(tablero.getPosicion(8,3));
			posiciones.add(tablero.getPosicion(9,3));
		}
		catch (TableroIndiceFueraDeRangoExcepcion e) { }
		
		try {
			barcos.add(new RompeHielos(posiciones, new Norte()));
		}
		catch (CantidadDePosicionesIncorrectasExcepcion e) { }
		
		return barcos;
	}
}
